# -*- coding: utf-8 -*-
from basehandler import BaseHandler
from modelos.usuario import Usuario
import datetime
'''
Este handler se ocupa de la función de recuperar la contraseña a una persona
que se acuerde al menos del nombre de usuario o de la cuenta de correo.
Hay que tener en cuenta que se ha de jugar con la fecha de petición. Las
peticiones caducan a la hora.
'''
class RecuperarPassword(BaseHandler):
    def get(self, p_r):
        self.inicio()
        if p_r:
            # Tenemos que buscar un usuario que exista y cuya fecha de
            # recuperación tenga menos de 60 minutos.
            u = Usuario.buscar_por_password_recuperacion(p_r)
            if u:
                if (datetime.datetime.today() - u.password_recuperar_fecha).total_seconds() < 3600:
                    # Mostramos una página con un formulario.
                    self.response.out.write(self.render('recuperar_2.html', **self.d))
                else:
                   self.redirect('/aviso/16') 
        else:
            self.d['b_titulo'] = 'Recuperar contraseña'
            self.response.out.write(self.render('recuperar.html', **self.d))
    
    def post(self):
        self.inicio()
        self.d['b_titulo'] = 'Recuperar contraseña'
        if self.esta_logueado():
            self.redirect('/aviso/13')
        else:
            # Tenemos que comprobar si lo que ha introducido el usuario es
            # un nombre o una contraseña.
            n_m = self.request.get('nick_correo')
            if self.comprueba_mail(n_m):
                u = Usuario.buscar_por_mail(n_m)
            if self.comprueba_username(n_m):
                u = Usuario.buscar_por_nombre(n_m)
            if not u:
                self.d['error_n_m'] = 'No ha introducido un correo o usuario que conste en nuestra base de datos'
                self.response.out.write(self.render('recuperar.html', **self.d))
            else:
                if u.inicia_recuperar():
                    self.redirect('/aviso/14')
                else:
                    self.redirect('/aviso/15')
                
        